import axios from 'axios'
// 康复
export const request = axios.create({
  //baseURL: 'http://192.168.0.147:8080/kfhl' // 周君豪
  // baseURL: 'http://192.168.0.103:8080/kfhl' // 杨哥
  // baseURL: 'http://192.168.0.199:8080/kfhl/', // 测试接口
  baseURL: 'http://jmx-kfdj.com/kfhl/' // 正式接口
  // baseURL: 'http://192.168.0.197:8080/kfhl/' // 测试-杨立涌(本地)
  // baseURL: 'http://121.5.108.212:8080/kfhl/' // 北京接口
  // timeout: 10000 // 解决请求时间过长
  // withCredentials: true // 解决跨域的参数
})

// 微信支付 分享等
export const weixin = axios.create({
  // baseURL: 'http://192.168.0.199:8080/kfhl/', // 测试接口
  baseURL: 'http://jmx-kfdj.com/kfhl/' // 正式接口
  // baseURL: 'http://121.5.108.212:8080/kfhl/', // 北京正式接口
  // timeout: 10000 // 解决请求时间过长
  // withCredentials: true // 解决跨域的参数
})
// 朋友圈
export const friendHttp = axios.create({
  // baseURL: 'http://192.168.0.148:8080/kfhl_war' // 刘 测试接口
  // baseURL: 'http://192.168.0.199:8080/kfhl' // 测试接口
  baseURL: 'http://jmx-kfdj.com/kfhl' // 正式接口
  // baseURL: 'http://121.5.108.212:8080/kfhl/' // 北京正式接口
  // timeout: 8000 // 解决请求时间过长
  // withCredentials: true // 解决跨域的参数
})

// 康复评估表 个人基本信息
export const his = axios.create({
  baseURL: 'http://jmx-kfdj.com/hisdemo/' // 正式接口
  // timeout: 10000 // 解决请求时间过长
  // withCredentials: true // 解决跨域的参数
})

// 统计分析
export const tongJi = axios.create({
  baseURL: 'http://jmx-kfdj.com:7001/kfhl_statistical_chart/' // 正式
  // timeout: 10000 // 解决请求时间过长
  // withCredentials: true // 解决跨域的参数
})
// 残疾人定制
export const canji = axios.create({
  // baseURL: 'http://192.168.0.152:7088', // 刘 测试接口
  // baseURL: 'http://192.168.0.100:7088/disablerboot' // 杨哥
  // baseURL: 'http://192.168.0.199:8080/disablerboot/', // 测试接口
  baseURL: 'http://jmx-kfdj.com/disablerboot' // 正式接口
  // baseURL: 'http://121.5.108.212:8080/disablerboot/', // 北京 正式接口
  // timeout: 10000 // 解决请求时间过长
  // withCredentials: true // 解决跨域的参数
})
// / 请求拦截器 康复
request.interceptors.request.use(
  config => {
    // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    const token = sessionStorage.getItem('token')
    token && (config.headers.Authorization = token)
    return config
  },
  error => {
    return Promise.error(error)
  })

// 响应拦截器
request.interceptors.response.use(
  response => {
    if (response.status === 200) {
      return Promise.resolve(response)
    } else {
      return Promise.reject(response)
    }
  },
  // 服务器状态码不是200的情况
  error => {
    if (error.response.status) {
      switch (error.response.status) {
        // 401: 未登录
        // 未登录则跳转登录页面，并携带当前页面的路径
        // 在登录成功后返回当前页面，这一步需要在登录页操作。
        case 401:
          break
        // 403 token过期
        // 登录过期对用户进行提示
        // 清除本地token和清空vuex中token对象
        // 跳转登录页面
        case 403:
          // Toast({
          //     message: '登录过期，请重新登录',
          //     duration: 1000,
          //     forbidClick: true
          // });
          if (sessionStorage.getItem('sys') === 'ANDROID') {
            window.WebViewJavascriptBridge.callHandler('skipToLogin', {'param': ''}, function (responseData) {})
          } else {
            window.location.href = '../../../kfhl/frontlogin/lu'
          }
          // 清除token
          break
        // 404请求不存在
        case 404:
          // Toast({
          //     message: '网络请求不存在',
          //     duration: 1500,
          //     forbidClick: true
          // });
          break
        // 其他错误，直接抛出错误提示
        default:
        // Toast({
        //     message: error.response.data.message,
        //     duration: 1500,
        //     forbidClick: true
        // });
      }
      return Promise.reject(error.response)
    } else {
      // 处理断网的情况
      // eg:请求超时或断网时，更新state的network状态
      // network状态在app.vue中控制着一个全局的断网提示组件的显示隐藏
      // 关于断网组件中的刷新重新获取数据，会在断网组件中说明
      if (!window.navigator.onLine) {
        return '请检查您的网络连接情况'
      } else {
        return Promise.reject(error)
      }
    }
  }
)
// / 请求拦截器 微信
weixin.interceptors.request.use(
  config => {
    // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    const token = sessionStorage.getItem('token')
    token && (config.headers.Authorization = token)
    return config
  },
  error => {
    return Promise.error(error)
  })

// 响应拦截器 微信
weixin.interceptors.response.use(
  response => {
    if (response.status === 200) {
      return Promise.resolve(response)
    } else {
      return Promise.reject(response)
    }
  },
  // 服务器状态码不是200的情况
  error => {
    if (error.response.status) {
      switch (error.response.status) {
        // 401: 未登录
        // 未登录则跳转登录页面，并携带当前页面的路径
        // 在登录成功后返回当前页面，这一步需要在登录页操作。
        case 401:
          break
        // 403 token过期
        // 登录过期对用户进行提示
        // 清除本地token和清空vuex中token对象
        // 跳转登录页面
        case 403:
          // Toast({
          //     message: '登录过期，请重新登录',
          //     duration: 1000,
          //     forbidClick: true
          // });
          if (sessionStorage.getItem('sys') === 'ANDROID') {
            window.WebViewJavascriptBridge.callHandler('skipToLogin', {'param': ''}, function (responseData) {})
          } else {
            window.location.href = '../../../kfhl/frontlogin/lu'
          }
          // 清除token
          break
        // 404请求不存在
        case 404:
          // Toast({
          //     message: '网络请求不存在',
          //     duration: 1500,
          //     forbidClick: true
          // });
          break
        // 其他错误，直接抛出错误提示
        default:
        // Toast({
        //     message: error.response.data.message,
        //     duration: 1500,
        //     forbidClick: true
        // });
      }
      return Promise.reject(error.response)
    } else {
      // 处理断网的情况
      // eg:请求超时或断网时，更新state的network状态
      // network状态在app.vue中控制着一个全局的断网提示组件的显示隐藏
      // 关于断网组件中的刷新重新获取数据，会在断网组件中说明
      if (!window.navigator.onLine) {
        return '请检查您的网络连接情况'
      } else {
        return Promise.reject(error)
      }
    }
  }
)

// / 请求拦截器 朋友圈
friendHttp.interceptors.request.use(
  config => {
    // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    const token = sessionStorage.getItem('token')
    token && (config.headers.Authorization = token)
    return config
  },
  error => {
    return Promise.error(error)
  })

// 响应拦截器
friendHttp.interceptors.response.use(
  response => {
    if (response.status === 200) {
      return Promise.resolve(response)
    } else {
      return Promise.reject(response)
    }
  },
  // 服务器状态码不是200的情况
  error => {
    if (error.response.status) {
      switch (error.response.status) {
        // 401: 未登录
        // 未登录则跳转登录页面，并携带当前页面的路径
        // 在登录成功后返回当前页面，这一步需要在登录页操作。
        case 401:
          break
        // 403 token过期
        // 登录过期对用户进行提示
        // 清除本地token和清空vuex中token对象
        // 跳转登录页面
        case 403:
          // Toast({
          //     message: '登录过期，请重新登录',
          //     duration: 1000,
          //     forbidClick: true
          // });
          // 清除token
          if (sessionStorage.getItem('sys') === 'ANDROID') {
            window.WebViewJavascriptBridge.callHandler('skipToLogin', {'param': ''}, function (responseData) {})
          } else {
            window.location.href = '../../../kfhl/frontlogin/lu'
          }
          break
        // 404请求不存在
        case 404:
          // Toast({
          //     message: '网络请求不存在',
          //     duration: 1500,
          //     forbidClick: true
          // });
          break
        // 其他错误，直接抛出错误提示
        default:
        // Toast({
        //     message: error.response.data.message,
        //     duration: 1500,
        //     forbidClick: true
        // });
      }
      return Promise.reject(error.response)
    } else {
      // 处理断网的情况
      // eg:请求超时或断网时，更新state的network状态
      // network状态在app.vue中控制着一个全局的断网提示组件的显示隐藏
      // 关于断网组件中的刷新重新获取数据，会在断网组件中说明
      if (!window.navigator.onLine) {
        return '请检查您的网络连接情况'
      } else {
        return Promise.reject(error)
      }
    }
  }
)
// / 请求拦截器 朋友圈
canji.interceptors.request.use(
  config => {
    // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    const token = sessionStorage.getItem('token')
    token && (config.headers.Authorization = token)
    return config
  },
  error => {
    return Promise.error(error)
  })

// 响应拦截器
canji.interceptors.response.use(
  response => {
    if (response.status === 200) {
      return Promise.resolve(response)
    } else {
      return Promise.reject(response)
    }
  },
  // 服务器状态码不是200的情况
  error => {
    if (error.response.status) {
      switch (error.response.status) {
        // 401: 未登录
        // 未登录则跳转登录页面，并携带当前页面的路径
        // 在登录成功后返回当前页面，这一步需要在登录页操作。
        case 401:
          break
        // 403 token过期
        // 登录过期对用户进行提示
        // 清除本地token和清空vuex中token对象
        // 跳转登录页面
        case 403:
          // Toast({
          //     message: '登录过期，请重新登录',
          //     duration: 1000,
          //     forbidClick: true
          // });
          // 清除token
          if (sessionStorage.getItem('sys') === 'ANDROID') {
            window.WebViewJavascriptBridge.callHandler('skipToLogin', {'param': ''}, function (responseData) {})
          } else {
            window.location.href = '../../../kfhl/frontlogin/lu'
          }
          break
        // 404请求不存在
        case 404:
          // Toast({
          //     message: '网络请求不存在',
          //     duration: 1500,
          //     forbidClick: true
          // });
          break
        // 其他错误，直接抛出错误提示
        default:
        // Toast({
        //     message: error.response.data.message,
        //     duration: 1500,
        //     forbidClick: true
        // });
      }
      return Promise.reject(error.response)
    } else {
      // 处理断网的情况
      // eg:请求超时或断网时，更新state的network状态
      // network状态在app.vue中控制着一个全局的断网提示组件的显示隐藏
      // 关于断网组件中的刷新重新获取数据，会在断网组件中说明
      if (!window.navigator.onLine) {
        return '请检查您的网络连接情况'
      } else {
        return Promise.reject(error)
      }
    }
  }
)
